/**
 * 模仿 C/Java 中的字符串格式化
 * @param {String} fmt: 待格式化字符串，支持 %s, %d, %f
 * @param {Object} arguments: 变长参数
 */
String.prototype.format = function() {
	// 将 arguments 转化为数组（ES5中并非严格的数组）
	var args = Array.prototype.slice.call(arguments);
	var count = 0;

	// 通过正则替换格式化字段
	return this.replace(/%[sdf]/g, function(pattern, offset) {
		let field = (args[count] == null) ? 'null' : args[count].toString(); 
		count++;
		return field;
	});
}
